<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the use of the GNU compilers.

Copyright (C) 1988-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Type Attributes (Using the GNU Compiler Collection (GCC))</title>

<meta name="description" content="Type Attributes (Using the GNU Compiler Collection (GCC))">
<meta name="keywords" content="Type Attributes (Using the GNU Compiler Collection (GCC))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html" rel="start" title="Top">
<link href="Indices.html" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="C-Extensions.html" rel="up" title="C Extensions">
<link href="Common-Type-Attributes.html" rel="next" title="Common Type Attributes">
<link href="Xstormy16-Variable-Attributes.html" rel="prev" title="Xstormy16 Variable Attributes">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en_US">
<span id="Type-Attributes"></span><div class="header">
<p>
Next: <a href="Label-Attributes.html" accesskey="n" rel="next">Label Attributes</a>, Previous: <a href="Variable-Attributes.html" accesskey="p" rel="prev">Variable Attributes</a>, Up: <a href="C-Extensions.html" accesskey="u" rel="up">C Extensions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="Specifying-Attributes-of-Types"></span><h3 class="section">6.35 Specifying Attributes of Types</h3>
<span id="index-attribute-of-types"></span>
<span id="index-type-attributes"></span>

<p>The keyword <code>__attribute__</code> allows you to specify various special
properties of types.  Some type attributes apply only to structure and
union types, and in C++, also class types, while others can apply to
any type defined via a <code>typedef</code> declaration.  Unless otherwise
specified, the same restrictions and effects apply to attributes regardless
of whether a type is a trivial structure or a C++ class with user-defined
constructors, destructors, or a copy assignment.
</p>
<p>Other attributes are defined for functions (see <a href="Function-Attributes.html">Function Attributes</a>),
labels (see <a href="Label-Attributes.html">Label Attributes</a>), enumerators (see <a href="Enumerator-Attributes.html">Enumerator Attributes</a>), statements (see <a href="Statement-Attributes.html">Statement Attributes</a>), and for variables
(see <a href="Variable-Attributes.html">Variable Attributes</a>).
</p>
<p>The <code>__attribute__</code> keyword is followed by an attribute specification
enclosed in double parentheses.
</p>
<p>You may specify type attributes in an enum, struct or union type
declaration or definition by placing them immediately after the
<code>struct</code>, <code>union</code> or <code>enum</code> keyword.  You can also place
them just past the closing curly brace of the definition, but this is less
preferred because logically the type should be fully defined at 
the closing brace.
</p>
<p>You can also include type attributes in a <code>typedef</code> declaration.
See <a href="Attribute-Syntax.html">Attribute Syntax</a>, for details of the exact syntax for using
attributes.
</p>
<table class="menu" border="0" cellspacing="0">
<tr><td align="left" valign="top">&bull; <a href="Common-Type-Attributes.html" accesskey="1">Common Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="ARC-Type-Attributes.html" accesskey="2">ARC Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="ARM-Type-Attributes.html" accesskey="3">ARM Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="BPF-Type-Attributes.html" accesskey="4">BPF Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="PowerPC-Type-Attributes.html" accesskey="5">PowerPC Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="x86-Type-Attributes.html" accesskey="6">x86 Type Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
</table>

<hr>
<div class="header">
<p>
Next: <a href="Label-Attributes.html" accesskey="n" rel="next">Label Attributes</a>, Previous: <a href="Variable-Attributes.html" accesskey="p" rel="prev">Variable Attributes</a>, Up: <a href="C-Extensions.html" accesskey="u" rel="up">C Extensions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
